草庐IT

javascript oop、instanceof 和基类

全部标签

c++将派生类分配给基类的更好方法

这似乎是一个愚蠢的问题,但我希望能够在一行中实例化派生类并将其分配给基类:classA{};classB:publicA{};//icandothisA*base;Bderived;base=&derived;//i'dliketodosomethinglikethisA*base;base=&B();//producesawarning:takingaddressoftemporary我试图在不使用new运算符的情况下获得多态行为。我认为编译器正在插入对构造函数返回值的临时引用。是否可以指示编译器我实际上想使用该地址进行分配?*编辑这里有一点背景。解析xml文件时,我有这样的事情:c

c++ - 根据入参值调用不同的基类构造函数

我有以下场景:根据Derived类构造函数的输入值,我需要调用不同的Base类构造函数。如:structBase{Base():v(0){}Base(int_v):v(_v){}intv;};structDerived{Derived(intv)/*ifv==42callBase()elsecallBase(int)*/{}};intmain(){Derivedf2(42);Derivedf1(1);}以我目前对C++的了解,我认为这是不可能的,所以我询问社区是否知道任何黑客攻击或脏代码可以使这成为可能。请不要让简单的int误导您,现实生活中的场景要复杂得多。随意混合使用C++11魔法

c++ - 非限定查找和(可能)依赖的基类

考虑以下程序:templatestructt{structbase{voidf1();};structderived:base{voidf2(){f1();}};};在derived::f2中,非限定查找用于查找f1。base会被搜索吗?base::f1会被找到吗?base是依赖类型吗?请引用标准来证实您的答案。 最佳答案 是的,base是相关的,因此找不到f1。在C++03中,addition明确了这一点。14.6.1/2d(在C++98中不存在),在C++0x中直接由14.6.2.1/6(n3126)声明。它的依赖很重要,因为下

c++ - 基类的 constexpr 地址

用clang3.4(trunk),有什么方法可以用常量表达式计算基类的位移吗?structA{inta;};structB{intb;};structC:A,B{};//cannotaccessbaseclassofnullpointer:constexprautoc_b_address=/*(size_t)*/&(B&)*(C*)nullptr; 最佳答案 是的,可以用常量表达式计算基类的位移,但它根本不可移植。你可以使用一个鲜为人知但documentedclang也支持的gcc扩展。当与运算符?::一起使用时,它涉及到__bui

C++ 在初始化列表中的基类初始化之前调用函数

场景:在一个项目中,我有classB源自classA,其中classA有一个不可访问的默认构造函数。ClassB设置如下:classB:publicA{private:voidSetupFunction(){/*Crucialcode*/}public:B():A(Value){}}假设它对SetupFunction()至关重要在A(Value)的之前初始化期间调用构造函数,我将如何实现这一目标?可能吗?我正在使用Code::Blocks13.12在Windows7上 最佳答案 您可以让SetupFunction()返回然后传递给初

iphone - Cocoa 基类的正确命名约定

我有一个应用程序,我将UIViewController子类化并向其添加一些特性,然后将它用于我应用程序中的每个ViewController。我只是想知道这个的命名约定是什么?我已将其命名为UIDefaultViewController,但我想知道是否可以通过某种方式将其命名为UIViewController,或者是否有适当的命名约定?我也有自己的UITextView实现和一些其他常见的UI类,只是想知道当它们是我在我的应用程序中使用的父类的主要版本时如何命名它们。 最佳答案 绝对不应该使用“UI”前缀。它是为UIKit.framew

php - 从基类调用继承类的父方法

下面的例子不起作用,因为当A类中调用parent时,php寻找A类的父类,但是它不存在。我宁愿这一行调用B类中的Test()。这可能吗?(我知道这似乎是一个愚蠢的例子,但它有实际应用)abstractclassA{functionCallParentTest(){returncall_parent_method('Test');}}abstractclassBextendsA{functionTest(){return'testpassed';}}classCextendsB{functionTest(){return$this->CallParentTest();}}$object=

php - instanceof 闭包返回 false

在我的应用程序的路由部分,我有Route和Router类,Route只包含有关特定映射路由的信息以及设置和获取这些信息的方法。我正在尝试像这样通过Closure,Router::map('/',function(){},array());我像这样存储第二个参数(闭包)$route=newRoute();$route->setTarget($target);*第二个参数是$target变量当我尝试这个的时候$target=$route->getTarget();if($targetinstanceofClosure){echo1;}else{echo0;}它打印0,但是当我尝试print

php - 为包装类操作 PHP-instanceof-operator

我想要一些类的通用包装类来拦截和操作一些方法调用。方法-调用-转发,拦截,目前没问题。但是想了想,我发现了一个我无法解决的问题:我在我的应用程序中到处都在使用内置的instanceof-operator。当然这不再有效,因为包装器不是其中类的实例。我想继续使用运算符而不是用其他函数替换它。有没有办法解决这个问题?这个运算符是如何工作的?它是否调用我可能能够在我的包装器中覆盖的类的核心函数?我知道这不是一个真正“干净”的操作这个运算符的解决方案,但我认为这对我来说是最简单的解决方案。正如我们所知,PHP中有很多东西不是那么干净...:-)谢谢你的回答,本 最佳

php - PHP 7 的 self 在什么情况下引用基类?

如前所述onReddit'sLOLPHPsub,PHP7在引用self时可以使用扩展类或基类,而PHP5总是引用扩展类。TryitonlinePHP5string(8)"BarABarC"PHP7string(8)"FooABarC"PHP7的行为尤其令人担忧,因为似乎没有任何简单的规则可以知道self何时引用基类或扩展类。在PHP7中确定self将引用哪个类的规则是什么? 最佳答案 self::应该始终引用它在其中使用的类(注意PHP5的行为也是错误的。)这是一个bug,fixed在7.1.4,这仅适用于类常量内的self::和p